package com.project.service;


import com.common.core.domain.AjaxResult;
import com.project.domain.bo.DmBudgetStandardBo;
import com.project.domain.entity.DmBudgetSubject;
import com.project.domain.vo.DmBudgetStandardVo;

import java.util.Date;
import java.util.List;

/**
 * 预算标准Service接口
 *
 * @author ruoyi
 * @date 2025-02-08
 */
public interface IBudgetStandardService
{
    /**
     * 查询预算标准
     *
     * @param ID 预算标准主键
     * @return 预算标准
     */
    public DmBudgetStandardVo selectDmBudgetStandardByID(String ID);

    /**
     * 查询预算标准列表
     *
     * @param projectClass 项目分类
     * @return 预算标准集合
     */
    public List<DmBudgetStandardVo> selectDmBudgetStandardList(String projectClass);

    /**
     * 新增预算标准
     *
     * @param dmBudgetStandard 预算标准
     * @return 结果 100 -> 科目编号已存在
     *             200  -> 新增加成功
     *             500  -> 新增失败
     */
    public int insertDmBudgetStandard(DmBudgetStandardBo dmBudgetStandard);

    /**
     * 修改预算标准
     *
     * @param dmBudgetStandard 预算标准
     * @return 结果
     */
    public Boolean updateDmBudgetStandard(DmBudgetStandardBo dmBudgetStandard);
    

    /**
     * 删除预算标准信息
     *
     * @param ID 预算标准主键
     * @return 结果
     */
    public Boolean deleteDmBudgetStandardByID(String ID);

    /**
     * 获取最大的科目前缀
     * @param projectClass  项目分类
     * @return
     */
    public String getMaxPrefix(String projectClass);

    /**
     * 根据项目分类id,查询预算标准id   立项日期在开始和结束日期之间的
     * @param projectClassId  项目分类id
     * @param projectDate 项目立项日期
     * @return
     */
    public String getYsbzIdByxmflId(String projectClassId, Date projectDate);

    /**
     * 根据项目分类id,查询预算科目集合   立项日期在开始和结束日期之间的
     * @param projectClassId  项目分类id
     * @param projectDate 项目立项日期
     * @return
     */
    List<DmBudgetSubject> getYskmListByxmflId(String projectClassId, Date projectDate);
}
